home *** CD-ROM | disk | FTP | other *** search
- Subject: v14i033: Mail User's Shell, version 6.0, Part01/14
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: island!argv@sun.com (Dan Heller)
- Posting-number: Volume 14, Issue 33
- Archive-name: mush6.0/part01
-
- (This synopsis is from Rich $alz...)
- Mush is a mail program. It helps you send, read, and generally
- manage electronic mail. There's a Sun "tool" interface, a curses
- interface, and a shell-like, from which the name Mail User's Shell
- is derived. It runs on a wide variety of Un-x machines, including
- BSD, USG, and Xenix machines.
-
- Mush provides many of the features of UCB Mail (a/k/a mailx).
- Mush is only a user-agent; it's designed to work with Sendmail as
- the program to transport, but using other progams shouldn't be
- too much work. There's a few notes about using MMDF, and I don't
- think a smail port would be too hard. The old /bin/mail program
- can be used; check the config.h file.
-
- In curses mode, it's pretty good at fooling an MH user, but it's
- more fun to be using the shell mode and have some C-shell hacker
- wander by...
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 14)."
- # Contents: MANIFEST README README-6.0 bindings.h check.pr
- # coffee.cup.pr config.h-dist cycle.pr dn.arrow.pr edit_menu.c
- # envelope.pr glasses.pr mail.icon.1 mail.icon.2 makefile.bsd
- # makefile.sun makefile.sys.v makefile.x286 makefile.x386 strings.h
- # up.arrow.pr write.pr
- # Wrapped by rsalz@fig.bbn.com on Wed Apr 13 20:04:40 1988
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'MANIFEST' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MANIFEST'\"
- else
- echo shar: Extracting \"'MANIFEST'\" \(2005 characters\)
- sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
- X File Name Archive # Description
- X-----------------------------------------------------------
- X MANIFEST 1 This shipping list
- X README 1
- X README-6.0 1
- X aliases.c 2
- X bind.c 5
- X bindings.h 1
- X check.pr 1
- X cmd_help 6
- X coffee.cup.pr 1
- X commands.c 8
- X config.h-dist 1
- X curs_io.c 3
- X curses.c 7
- X cycle.pr 1
- X dates.c 3
- X dn.arrow.pr 1
- X doproc.c 5
- X edit_menu.c 1
- X envelope.pr 1
- X execute.c 3
- X expr.c 2
- X file.c 3
- X fkeys.c 6
- X folders.c 2
- X glasses.pr 1
- X hdr_panel.c 2
- X hdr_procs.c 2
- X hdrs.c 10
- X help.c 4
- X init.c 4
- X loop.c 9
- X mail.c 14
- X mail.icon.1 1
- X mail.icon.2 1
- X main.c 5
- X main_panel.c 3
- X makefile.bsd 1
- X makefile.sun 1
- X makefile.sys.v 1
- X makefile.x286 1
- X makefile.x386 1
- X misc.c 4
- X msgs.c 7
- X mush.1.a 11
- X mush.1.b 12
- X mush.1.c 13
- X mush.h 8
- X pick.c 4
- X print.c 2
- X rite.c 2
- X select.c 6
- X setopts.c 4
- X signals.c 3
- X sort.c 2
- X strings.c 2
- X strings.h 1
- X tool.c 2
- X tool_help 9
- X up.arrow.pr 1
- X viewopts.c 5
- X write.pr 1
- END_OF_FILE
- if test 2005 -ne `wc -c <'MANIFEST'`; then
- echo shar: \"'MANIFEST'\" unpacked with wrong size!
- fi
- # end of 'MANIFEST'
- fi
- if test -f 'README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README'\"
- else
- echo shar: Extracting \"'README'\" \(10665 characters\)
- sed "s/^X//" >'README' <<'END_OF_FILE'
- X/* @(#)README 2.5 (c) copyright 10/24/87 (Dan Heller) */
- X
- Author:
- X Dan Heller
- X
- Network address:
- X island!argv@sun.com dheller@ucbcory.berkeley.edu
- X argv@garp.mit.edu argv@spam.istc.sri.com
- X
- When sending mail, mail to the addresses in the order given.
- X
- Contained is the source for "Mail User's Shell" (MUSH), an interface
- for the sending, viewing and managing of electronic mail on UNIX(tm) systems.
- Redistribution of this code is permitted as long as all copyright notices
- remain intact and all other identifying notices remain in the code and
- in the binary. This includes message headers on outgoing mail and
- the startup message. Failing to adhere to this reflects on your poor
- sense of fair play and bad attitude -- you will probably fail in your
- social and business affairs with little honor and respect from your peers.
- X
- With that out of the way...
- X
- To install Mush on your system, find the file that most closely resembles
- X"config.h" (probably "config.h-dist") COPY it to config.h, edit it to reflect
- the system dependencines described there. Decide which makefile applies
- to you. makefile.sun applies only to suns and creates a binary called
- X"mush." If the binary ends in "tool", then the graphics (tool) mode will
- be used by default on invocation. Otherwise, you must specify -t for toolmode
- on sun workstations. The SUNTOOL define must be set in the makefile.sun
- in order to compile the suntools version. You don't need to be running
- sunview; old sunwindows (2.0+) may be used.
- X
- If you're on a BSD system and it's not a sun workstation, or if you're on a
- sun workstation and know that you're not going to use the suntools mode then
- you should use makefile.bsd so that SUNTOOL won't be defined and unneccessary
- files not be compiled so the binary will be made smaller.
- X
- The files makefile.x286 and makefile.x386 were created especially for
- xenix machines. Depending on the configuration of your particular xenix box,
- some tweeking of the makefile flags may be necessary. If your xenix
- release is 2.2 or higher then you must define USG. Libraries to use should
- be -ltinfo *not* -lcurses -ltermlib. This is because the curses package
- uses termio instead of the sgtty data structure. If you want to use termio
- anyway, even if you're on an older xenix system (that supports termio),
- then you may define USG anyway.
- X
- makefile.sys.v is for unix machines that are not running any flavor of
- BSD and probably running a system-v flavor of unix -- this defines USG
- so that termio will be used. Some older unix systems have SYSV defined
- in /usr/include/curses.h (which is used if you are compiling with CURSES)
- In most cases, these only generate annoying warning messages and does not
- effect the compilation of the code.
- X
- Mush was designed to use sendmail as the Mail Transport Agent. However,
- other MTA's will work. The MTA you use should be defined in config.h
- under the MAIL_DELIVERY macro define. By default, /usr/lib/sendmail -i
- is used -- the option, -i, tells sendmail not to accept "." on a line
- by itself as an end-of-file marker.
- X
- If you do not use sendmail, then you should be familiar enough with your
- MTA to know whether it uses "From " to separate messages. Some mailers
- use special control characters to separate messages in a folder. MMDF may
- use "^A^A^A^A" or older delivermail versions would use "^C". Whatever
- your system uses, if it is NOT "From " (just the first 5 chars on a line
- matching "From "), then this string should be defined in config.h under
- MSG_SEPARATOR.
- X
- Even if you do use the "From " construct to separate messages, some people
- complain about messages which contain lines that start with "From ", but
- are not message separators. Few MTA's allow lines beginning with "From "
- to be a part of a message body and modify the line by preceding it with a
- X'>' resulting in ">From ..." However, there are some mailers that don't
- do this -- What mush does is look for a pattern of
- From <string> <date format>
- The string is usually the return address of the sender. The date format
- is supposed to be in ctime(3) format. Even still, some MTA's don't conform
- completely to this standard and vary slightly in implementation. The function
- X"getmail()" (which reads in messages) contains a scanf which looks for this
- format to verify that this is indeed a new message we're reading. If you
- install mush and find that you are entering a shell, but mush indicates there
- are no messages in the folder, it could be that you have a weird "From "
- line format and the scanf needs to be modified or even removed.
- X
- Some MTA's, especially older ones like /bin/mail or execmail (xenix), do
- not conform to RFC822 and provide the required headers: From: and Date:.
- To remedy either #define OLD_MAILER in config.h or add the -D option
- OLD_MAILER in the appropriate makefile: -DOLD_MAILER as part of the CFLAGS
- variable.
- X
- If your mailer does NOT have a verbose option, then you should not have
- VERBOSE_ARG defined. Otherwise, define it to be whatever the
- verbose argument is for your mailer.
- X
- Sendmail uses the -m argument to say, "metoo" -- when sending to mailing
- lists, normally sendmail will send mail to mailing lists, but if you're
- in that list, you are excluded from getting your own mail. However, if
- you have the variable metoo set with your variables, then the METOO argument
- is passed to sendmail to say, "I know I'm on this mailing list, but send
- me a copy of my message even tho I sent it." For sendmail, this is -m.
- If your mailer uses something else, then define METOO_ARG in the config file.
- If you don't have it (sys-v), then do not define this macro.
- X
- VPRINTF should be defined if your system has the vprintf functions. You
- X*have* these functions if 1) you are running system V, 2) xenix, or 3) you
- are running a Sun release on or later than version 3.0. If you are still not
- sure, try the following command from your shell:
- X
- X% ar t /lib/libc.a | grep vprintf
- X
- If you have it, you'll probably get something like
- vprintf.o
- vsprintf.o
- as output. If you don't have it, you won't have any output. If your
- main C-libraries are not in /lib/libc.a, then find where they are and
- try the same command using that file.
- X
- If you have REGCMP, this should be defined so that you will use the
- routines regcmp() and regex() as the regular expression composer/parser.
- If you don't have REGCMP defined, then the routines re_comp() and re_exec()
- are used (this is the default). Note that some systems do not have either
- set of routines in the default libraries. You must find the library to use
- and add it to the list of libraries to use. If this is the case, your link
- will fail with the errors that regex and re_comp are undefined functions.
- Read your man page for regex(3) to find where to locate those libraries.
- X
- A default mailrc should be installed for new users. UCB mail's default
- Mailrc works but no mailrc works also. The location of the default
- file should be defined in config.h. To have no default mailrc, set the
- default to /dev/null. For sun systems, the default .mailrc (/usr/lib/Mailrc)
- does not work very well because sun's Mail is not standard /usr/ucb/Mail.
- For this reason, sun has not changed the default mailrc file and still
- resides in /usr/lib/Mail.rc (note this has the "." whereas the other file
- does not). The default config.h-dist reflects this.
- X
- The help files should be placed somewhere which is readable and accessible
- by all. Failing to do so removes virtually the entire help facility's
- ability to help anyone. There is a help file for command help ( `command -?'),
- and the other is for the graphics mode (Sun workstations only). You should
- define where you want these files in "config.h" so at runtime, they can be
- accessed without error.
- X
- The default settings in config.h may be documented as the default values
- in the help files. Be aware that changing some default values may cause
- inconsistencies with the help files and documentation.
- X
- If your system has *sys_siglist[], skip this paragraph. If it doesn't,
- or if your system has a non-standard list, you should edit signals.c at
- the top and build the table manually from the one given for System-V people.
- Note that most system-v unix systems need not change anything as long as
- SYSV is defined.
- X
- Maintenance:
- X
- If you want to use dbx or any other debugger, the undocumented flag, -e
- should be used as command line argument when you run the binary under
- the debugger. What this flag does is prevents your echo from being
- turned off and leaving cbreak on, thus, keeping your tty in a sane state.
- Beware of curses mode tho, since it must be turned off for that -- e.g.
- the -e flag is overridden if you enter curses mode. The -e flag can be
- used in general usage anyway, but there's no difference known to the user
- except for the fact that you can not type control characters.
- X
- If you have memory allocation checking and validation (sun 3.0+ ?) then
- define M_DEBUG in the makefile (main.c) and add the library
- X/usr/lib/debug/malloc.o to the library list. Do this only if you are
- find bugs in the program and suspect memory allocation errors. main.c
- has the code which sets the debugging level according to the value of
- an environment variable. Because malloc-debugging is so cpu intensive,
- the sunwindows program will get a SIGXCPU (cpu time limit exceeded)
- because of the large amount of opening and closing large pixrects and
- devices. For this reason, SIGXPCPU is is caught in main.c.
- X
- If you ever get "Message N has bad date: <date string>" then note
- the FORMAT of that date and edit dates.c. There are a number of
- X"sscanf"s which you can see match known date formats. Use them as
- examples and insert the new date format you have.
- X
- If you ever add new variables, be sure to add them in viewopts.c and the
- man page.
- X
- If Mush ever coredumps and you are suspicious about whether or not
- your folder (or spool directory) was removed. Or, if you were editing
- a letter, you should check for the files .mushXXXXXX and .edXXXXXXX.
- Mush won't die without telling you that it's dying and it will ask if you
- want to save the .mush????? file and if you actually want it to dump core.
- Note that if you run mush from .suntools and there is a core dump, it
- probably wants to do some IO with the console and may hang (not exit)
- because it doesn't know it can't talk to you.
- X
- Last attempted, mush passed lint with a small number of errors indicating
- that fflush, fclose and other similar functions returned values which
- were always ignored. Sorry. I did not attempt lint on the suntools mode.
- Curses doesn't lint very well, but even when you lint mush with CURSES
- defined, it only complains about the unused curses globals in curses.h.
- END_OF_FILE
- if test 10665 -ne `wc -c <'README'`; then
- echo shar: \"'README'\" unpacked with wrong size!
- fi
- # end of 'README'
- fi
- if test -f 'README-6.0' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README-6.0'\"
- else
- echo shar: Extracting \"'README-6.0'\" \(16732 characters\)
- sed "s/^X//" >'README-6.0' <<'END_OF_FILE'
- This is the README for release 6.0 of mush. Note that the orginal README
- has changed as well, so it should be read again. It contains important
- information for installing mush on your system.
- X
- With this distribution, there is a file called Mailrc which can be
- used as the "default" mailrc (see config.h-dist). This file will set
- variables and command line aliases to make mush look as much like ucb Mail
- as it possibly can.
- X
- New makefile && compiler flags:
- X System V machines that aren't XENIX should use the makefile.sys.v makefile.
- X The old makefile.sys.v has been removed. System-V machines
- X that aren't xenix may note -DUSG in the makefile. USG is defined in
- X curses.h but is required to be in the makefile if compiling without the
- X curses libraries. It should be in the makefile anyway so you never have
- X to worry about it. Xenix machines should use makefile.x286 or makefile.x386
- X USG should probably be defined on your xenix system unless you are running
- X a _very_ old version of xenix. I don't know how old it would be, but
- X try compiling mush with USG first -- if that fails, then undefine it.
- X
- X Some systems have regcmp/regex as their regular expression matching
- X routines while others have re_comp/re_exec -- If you have regcmp,
- X then you must have -DREGCMP in the makefile you're using. If you have
- X both sets of routines, take a pick. Note that some systems do not
- X have either set of routines in the default libraries. You must find
- X the library to use and add it to the list of libraries to use. If this
- X is the case, your link will fail with the errors that regex and re_comp
- X are undefined functions. Read your man page for regex(3) to find where
- X to locate those libraries.
- X
- X Machines that use mail transfer agents that *do not* use a colon-less
- X "From " line as a message separator should #define in config.h the string
- X MSG_SEPARATOR. Since this string is usually control characters, you
- X need to specify actual ascii values for those characters. Users of MMDF,
- X for example, may use "\001\001\001\001" since some mmdf versions use four
- X control-A's to separate messages. This message separator assumes that
- X there is a carriage return at the end of the string. Systems that use
- X sendmail need not concern themselves with this define.
- X
- X Some mailers (not RFC822 compatible, like execmail and older binmail's)
- X do not accept commas between addresses on outgoing mail. Such mailers
- X also tend not to add the From: field and Date: field, which are headers
- X required to be compatible with RFC822. This does not apply to BSD systems
- X or systems which run sendmail. If this applies to your system, you
- X should define OLD_MAILER in config.h as "#define OLD_MAILER" or in the
- X makefile in addition to the CFLAGS definition: -DOLD_MAILER. This does not
- X affect the user interface at all; mush will still enforce commas between
- X addresses. However, addresses given on the command line to the mailer
- X will have commas stripped out if OLD_MAIL is defined in the makefile or
- X config.h.
- X
- System V:
- X New functions:
- X lock_file() /* returns -1 if can't lock */
- X close_lock() /* unlocks and calls fclose */
- X These functions also support BSD, xenix and sys-v. These are provided
- X as locking mechanisms for all systems -- ifdef's decide how to lock.
- X
- X Support for termio functionality. Macros in mush.h have been modified
- X to provide for echo/cbreak modes to depending on the compiler flags:
- X CURSES and SYSV/BSD/USG. There are 6 different possible cases here.
- X
- X Problem with xenix/sys-v getting the "name" from a "From:" field since
- X char pointer and char arrays are different sizes. (hdrs.c, compose_hdr())
- X
- X sendmail mail now forks off and returns you to a mush prompt so you
- X don't have to wait for the mail to be delivered. This is true for
- X both xenix and sys-v.
- X
- X terminfo is now supported.
- X
- Command line arguments:
- X -u [user]
- X /usr/spool/mail/user is used as the current folder. If "user" isn't
- X specified, /usr/spool/mail/root is used.
- X
- X -T timeout implies -t (for tooldmoe), so -t is not required if -T is given.
- X
- X If -r (readonly) flag is given on the command line or to the folder/update
- X commands, the folder (or spoolfile) is opened readonly and the mail is
- X *not* copied into a temporary buffer. This speeds up IO dramatically in
- X systems with slow IO or disk drives (typically, xenix/sys-v).
- X
- X -H implies -r, so -r is not necessary. If mush is started just to read
- X the headers of your mail, then forcing read only improves performance.
- X
- X a folder as well as an address can be given on the command line. Thus,
- X % mush -f foldername address-list
- X will first interactively mail to the address-list and upon return read
- X in the folder "foldername".
- X
- Misc:
- X There is now an internal pager which is used if the user has no
- X "pager" variable set and no environment PAGER variable. This pager
- X is very simple and understands <space> for next $crt lines, \n does
- X just the next line, ^D does the next half $crt lines, and q,Q quits.
- X The user can "set pager" (to null, effectively) or to the string "internal"
- X to always get the internal pager. The DEF_PAGER macro in config.h can
- X be set to "internal" also. (do_pager() misc.c)
- X
- X Mush now understands 'well-formed' addresses. A well-formed address
- X consists of tokens of the form:
- X
- X $path
- X $path (Name or comment here)
- X Name or comment <$path>
- X "Name or comment" $path
- X
- X See the man page for Extensive examples and rules for what formats
- X are legal, but may not be supported.
- X
- X To: lines which are too long from incoming mail are truncated. Previously,
- X a segmentation fault would result -- replies to messages containing long
- X To: lines will attempt to chop off the list between addresses.
- X
- X Add right justification in hdr_format format string field similar
- X to printf style formatting. Example:
- X set hdr_format = '%-25n %7d (%l) "%s"'
- X will produce a header format such that the name of the author is
- X right justified 25 positions, 7 chars of the date is printed, the
- X number of lines in the message and the subject surrounded by quotes.
- X Also subwidths are allowed using the same dot notation as provided by
- X printf. (hdrs.c)
- X
- X The '%S' switch for message status has been removed and the status of
- X a message is always at the beginning of the message header line
- X by default along with the msg number and the '>' if it's the current msg.
- X There is a new status flag for replied to messages. If a message has
- X been replied to, then a 'r' is placed in the header string just after
- X the first status flag.. Thus, the header:
- X 4 >*r Dan Heller <island!argv@sun.com> ....
- X means that message 4 is the current message, it has been deleted,
- X and has been replied to...
- X
- X In the hdr_format string, the date of a message can be printed
- X using the same formatting characters as the prompt uses. %T is
- X the time, etc... Note that %d still prints the whole date, but
- X the new formatting characters allow parts of the date to be printed.
- X
- X New option for mail:
- X mail -s [subject]
- X With no subject specified, -s forces a prompt for the subject
- X header even if the variable "ask" is not set. If a subject is
- X specified, then the subject is set to that string explicitly.
- X This allows the reply command to change the subject or to prompt
- X to change the subject.
- X
- X Saveopts now warns if file already exists; you must confirm overwrite.
- X
- X Control characters typed are now understood and can be entered into
- X letters etc... To enter a special control character such as your backspace
- X character or kill line character use the backslash. In the toolmode,
- X use your literal next character (^V in most cases).
- X
- X "varargs" now used in print.c to provide support for machine that
- X do not stack arguments compatible with vax/68000/etc... These machines
- X are Pyramids, Sun4's and more... (print.c)
- X
- X The temporary file used to type in messages is now _closed_ before
- X invoking an editor. This is for gnuemacs users or users of other
- X editors which insist on no other references to that file be open.
- X
- X Using job control (^Z/fg) which in the headers portion of a message
- X (e.g. "To: ") would cause mush to be confused about what state the program
- X is in and would inadvertently show a prompt (user's $prompt) even
- X tho it was executing the right code (prompting for the To: line). This
- X has been fixed so that the prompt isn't given, but the To: line will
- X not be reprompted.
- X
- X Mailing to users from the command line and ^C-ing while in the To: or
- X Subject: prompt would just report an interrupt and not abort the message;
- X it now exits.(hdrs.c, set_header())
- X
- X If the user's home dir isn't writeable, or permissions changed during
- X runtime, mush changes to ALTERNATE_HOME and tries again rather than just
- X returning an error message. If the alternate home also fails, an error
- X is printed and the function aborted.
- X (main.c, mail.c, start_file())
- X
- X When updating a folder, ignored headers are now copied back regardless
- X of the variable, "alwaysignore". This is necessary because the user may
- X ignore headers that are required to be read when reading in a folder.
- X (msgs.c, copy_msg())
- X
- X pick has a new option to pick from an arbitrary header.
- X pick -h return-path ucbvax
- X searches for the string "ucbvax" in the Return-Path: header of all
- X messages.
- X
- New Variables:
- X autosign2
- X Use an alternate signature for specific users. Format for string:
- X set autosign2 = "address, address, ... : <signature>"
- X where "address" is a legal address (or alias) and signature is that
- X described by "autosign". the colon separates the list from the signature.
- X If the colon is missing or if the list is null, the signature is used
- X and no checks are made against the recipient list. Otherwise, each
- X address on the recipient list of outgoing mail must also exist in
- X the autosign2 list. Otherwise, the signature in autosign is used.
- X If autosign is not set, the autosigning isn't done unless ~S is used.
- X
- X show_hdrs (String)
- X Set to a list (space and/or comma separated) of headers which are to
- X be the only headers displayed when viewing a message. This disables
- X the headers supressed by the ignore command. Example:
- X set show_hdrs = "from date subject to cc"
- X will only display the headers,
- X From: Date: Subject: To: Cc:
- X in their entirety.
- X
- X mil_time -- if set, 24 hour military time format is used in message
- X dates or if the time is used in the prompt. Otherwise, 12-hour with
- X an added "am/pm" is displayed.
- X
- X The variable "no_expand" prevents expansion of mush addresses in
- X outgoing mail. The To: line will read the same as it was typed --
- X this hides the complete list of addresses of everyone on the list.
- X
- X A new variable called "wrap" has been added. When the last message is
- X deleted, the next "current" message is usually the next undeleted message.
- X If wrap is not set, then the curent message remains at the end of the
- X list of messages. Similarly, if "next" ('n', CR) is specified, wrapping
- X to the beginning of the list only happens if the variable is set.
- X
- X The variable fixaddr has been removed and the variable auto_route has
- X been modified to route uucp mail thru the host of the author of the
- X message being replied to as well as removing redundant hostnames such as:
- X host1!host2!host1!user -> host1!user
- X
- X "cdpath" added. This is like csh's but note you can't use ()'s to
- X set the path -- use quotes: ("). When the cd command is issued,
- X if there is no cdpath set, then the directory mentioned is cd'ed to.
- X If there is a cdpath and the pathname given is not a full pathname,
- X then each element in the cdpath is searched for the directory specified.
- X Recommend putting "." first in cdpath if one is used.
- X
- X "sendmail" -- if set, this program is used instead of the default Mail
- X Transfer Agent defined as MAIL_DELIVERY in config.h ... If used, the
- X default flags -i and -m are not passed along to the MTA, so any flags
- X which are necessary for the MTA should be included in the sendmail
- X variable's string value.
- X
- X pre_indent_str, post_indent_str (string)
- X These strings have the same properties as "hdr_format". The
- X pre_indent_str string will precede the body of text interpolated into
- X the message buffer and the post_indent_str will succeed the text. See
- X the man page for extensive details.
- X
- X in_reply_to (string)
- X set to a string interpreted the same as "hdr_format" -- when replying
- X to mail, an additionaly outgoing message header In-Reply-To: is added.
- X See man page for more extensive details.
- X
- X "ask" is a boolean which is for compatibility with ucb-Mail. If set,
- X you will be prompted for a subject. otherwise, no subject prompting
- X is done.
- X
- Curses:
- X In curses mode, line-mode-escape commands which contain pipes,
- X :pick -s pattern | save folder
- X would segmentation fault on the command that follows such commands.
- X The next command to execute thinks that piping is on causing a segmentation
- X fault trying to reference the non-existent message list. This was fixed by
- X resetting the DO_PIPE/IS_PIPE flags to off in the cmd_line() routine.
- X (misc.c, cmd_line())
- X
- X Quitting now goes to the bottom of the screen rather than moving
- X down one line [as well as other quit-related update bugs]
- X (curses.c, case C_QUIT:)
- X
- X Updating (^U) now redraws the screen right if you weren't on the
- X first "screenful" of messages. (curses.c, case C_UPDATE)
- X
- X 's' (save) command wasn't saving to mbox on no input (CR). It tried
- X to save to "" which maps to "." which is a directory. (curses.c)
- X
- X The bug causing the GOTO command to inifinite loop if there were 0
- X or 1 messages in the folder if invoked by selecting a digit key has
- X been fixed. The manual entry for how the goto command works has a
- X more detailed description and gives an example for effective usage.
- X Due to its versatility, there can be some screen updating problems
- X if the user specifies a message list which contains a command that
- X produces any "stdout" type output. Normally, this shouldn't happen,
- X because most commands which are used to "search for messages" will
- X not output anything if they are being "piped". If the user wishes
- X to specify a command that produces output (like echo) then the screen
- X will not be updated correctly (use ^L to redraw). See the updated
- X man page entry for deatils on the above.
- X
- X The bind command doesn't require the use of \Cc to represent control
- X characters anymore. The old interface is still supported -- in fact
- X control characters that are typed are converted to this ascii format
- X for purposes of displaying current bindings and to allow .mushrc files
- X to specify bindings in ascii format. However, control characters may
- X be typed as is. The spacebar may be bound to a command if it is given
- X in the .mushrc file or on a Mush command line. See the manual.
- X
- Tool mode:
- X Trying to start tool in icon mode sometimes aborts with segementation
- X fault. This is caused by the window size being 0 and the message
- X trying to be written to the empty window. The routine which tries to
- X output each line of the message to the window is recursive. If the line
- X wraps because of the window's width being less than the length of the
- X line, Addstr() finds the position in the line which wraps and calls
- X itself recursively passing the remainder of the string. The size of
- X 0 means that Addstr is calling itself at the the beginning of the string
- X all the time. The fix is in copy_msg where it checks to see if the
- X window is large enough to attempt printing the message (msgs.c, copy_msg())
- X
- X When changing folders, if there are no messages in the new folder,
- X the last read message was still displayed leaving the user somewhat
- X confused. If there are no messages, the window is cleared. (folders.c)
- X
- X To be consistent with the other two interfaces, both delete and
- X backspace will backspace if in type-in mode. (rite.c)
- X
- X When returning from using the editor, the window displaying the letter
- X being composed would contain what the letter looked like before the editor
- X was invoked. This has been fixed by printing out the last part of the
- X letter up to the size of the window available.
- END_OF_FILE
- if test 16732 -ne `wc -c <'README-6.0'`; then
- echo shar: \"'README-6.0'\" unpacked with wrong size!
- fi
- # end of 'README-6.0'
- fi
- if test -f 'bindings.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bindings.h'\"
- else
- echo shar: Extracting \"'bindings.h'\" \(1492 characters\)
- sed "s/^X//" >'bindings.h' <<'END_OF_FILE'
- X/* bindings.h -- command bindings */
- X
- X/* to see if a key sequece matches, prefixes or misses a set binding */
- X#define NO_MATCH 0
- X#define MATCH 1
- X#define A_PREFIX_B 2
- X#define B_PREFIX_A 3
- X
- X#define NULL_MAP (struct cmd_map *)0
- X#define C_NULL 0
- X#define C_GOTO_MSG 1
- X#define C_WRITE_MSG 2
- X#define C_WRITE_LIST 3
- X#define C_SAVE_MSG 4
- X#define C_SAVE_LIST 5
- X#define C_COPY_MSG 6
- X#define C_COPY_LIST 7
- X#define C_DELETE_MSG 8
- X#define C_DELETE_LIST 9
- X#define C_UNDEL_MSG 10
- X#define C_UNDEL_LIST 11
- X#define C_REVERSE 12
- X#define C_REDRAW 13
- X#define C_NEXT_MSG 14
- X#define C_PREV_MSG 15
- X#define C_FIRST_MSG 16
- X#define C_LAST_MSG 17
- X#define C_TOP_PAGE 18
- X#define C_BOTTOM_PAGE 19
- X#define C_NEXT_SCREEN 20
- X#define C_PREV_SCREEN 21
- X#define C_SHOW_HDR 22
- X#define C_SOURCE 23
- X#define C_SAVEOPTS 24
- X#define C_NEXT_SEARCH 25
- X#define C_PREV_SEARCH 26
- X#define C_CONT_SEARCH 27
- X#define C_PRESERVE 28
- X#define C_SORT 29
- X#define C_REV_SORT 30
- X#define C_QUIT_HARD 31
- X#define C_QUIT 32
- X#define C_EXIT_HARD 33
- X#define C_EXIT 34
- X#define C_UPDATE 35
- X#define C_FOLDER 36
- X#define C_SHELL_ESC 37
- X#define C_CURSES_ESC 38
- X#define C_PRINT_MSG 39
- X#define C_CHDIR 40
- X#define C_VAR_SET 41
- X#define C_IGNORE 42
- X#define C_ALIAS 43
- X#define C_OWN_HDR 44
- X#define C_VERSION 45
- X#define C_MAIL_FLAGS 46
- X#define C_MAIL 47
- X#define C_REPLY_SENDER 48
- X#define C_REPLY_ALL 49
- X#define C_DISPLAY_MSG 50
- X#define C_TOP_MSG 51
- X#define C_DISPLAY_NEXT 52
- X#define C_BIND 53
- X#define C_UNBIND 54
- X#define C_HELP 55 /* THIS MUST BE THE LAST ITEM */
- END_OF_FILE
- if test 1492 -ne `wc -c <'bindings.h'`; then
- echo shar: \"'bindings.h'\" unpacked with wrong size!
- fi
- # end of 'bindings.h'
- fi
- if test -f 'check.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'check.pr'\"
- else
- echo shar: Extracting \"'check.pr'\" \(240 characters\)
- sed "s/^X//" >'check.pr' <<'END_OF_FILE'
- X/* "@(#)check.pr 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0x0001,0x0003,0x0007,0x000E,0x001C,0x0038,
- X 0xC070,0xE0E0,0x71C0,0x3B80,0x1F00,0x0E00,0x0400,0x0000
- END_OF_FILE
- if test 240 -ne `wc -c <'check.pr'`; then
- echo shar: \"'check.pr'\" unpacked with wrong size!
- fi
- # end of 'check.pr'
- fi
- if test -f 'coffee.cup.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'coffee.cup.pr'\"
- else
- echo shar: Extracting \"'coffee.cup.pr'\" \(193 characters\)
- sed "s/^X//" >'coffee.cup.pr' <<'END_OF_FILE'
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0200,0x0100,0x0600,0x0800,0x0600,0x0100,0xFFF8,0x800C,
- X 0x800A,0x4012,0x401C,0x2020,0x9048,0x7FF0,0x3FE0,0x0000
- END_OF_FILE
- if test 193 -ne `wc -c <'coffee.cup.pr'`; then
- echo shar: \"'coffee.cup.pr'\" unpacked with wrong size!
- fi
- # end of 'coffee.cup.pr'
- fi
- if test -f 'config.h-dist' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'config.h-dist'\"
- else
- echo shar: Extracting \"'config.h-dist'\" \(2000 characters\)
- sed "s/^X//" >'config.h-dist' <<'END_OF_FILE'
- X/* config.h 1.1 (c) copyright 1986 (Dan Heller) */
- X
- X#define MAILRC ".mushrc"
- X#define ALTERNATE_RC ".mailrc"
- X#define LIBDIR "/usr/lib
- X#define DEFAULT_RC LIBDIR/Mail.rc"
- X#define COMMAND_HELP LIBDIR/cmd_help"
- X#ifdef SUNTOOL
- X# define TOOL_HELP LIBDIR/tool_help"
- X#endif /* SUNTOOL */
- X#define ALTERNATE_HOME "/tmp" /* Path must be read/write to EVERYONE */
- X#define EDFILE ".edXXXXXX" /* file/pathname added to user's "home" */
- X
- X/* mail delivery system */
- X#define MAIL_DELIVERY "/usr/lib/sendmail -i"
- X#define VERBOSE_ARG "-v" /* undef if none exists */
- X#define METOO_ARG "-m" /* man sendmail for more info. */
- X
- X#define MAXMSGS 1000 /* maximum number of messages we can read */
- X#ifndef MAXPATHLEN
- X#define MAXPATHLEN 256
- X#endif
- X
- X#define VPRINTF /* If your system supports the vprintf() functions,
- X * True for sys-v and later sun versions (3.0+ ?).
- X */
- X
- X/* If your mail transfer agent uses something *besides* "From " to separate
- X * adjacent messages in a folder, define MSG_SEPARATOR to be this string.
- X * If that string is 4 ^A's, then the string would be "\001\001\001\001"
- X * If you don't know what this means, leave it alone.
- X */
- X/* #define MSG_SEPARATOR "From " */
- X
- X/* The maximum number of hostnames YOUR host may have (usually found in
- X * /etc/hosts for BSD systems). System-V/xenix doesn't use this (use 1).
- X */
- X#define MAX_HOST_NAMES 1
- X
- X#define LS_COMMAND "ls"
- X#define FORTUNE "/usr/games/fortune"
- X#define LPR "lpr"
- X#define SIGNATURE ".signature"
- X#define MAILDIR "/usr/spool/mail"
- X
- X/* default settings for some variable strings */
- X#define DEF_PROMPT "Msg %m of %t: "
- X#define DEF_PAGER "more" /* set to "internal" to use internal pager */
- X#define DEF_SHELL "csh"
- X#define DEF_EDITOR "vi"
- X#define DEF_FOLDER "~/Mail" /* default Mail folder */
- X#define DEF_MBOX "~/mbox" /* default mbox */
- X#define DEF_INDENT_STR "> " /* indent included mail */
- X#define DEF_PRINTER "lp"
- X#define DEF_ESCAPE "~"
- X#define DEF_HDR_FMT "%25f %7d (%l/%c) \"%s\"" /* default hdr_format */
- END_OF_FILE
- if test 2000 -ne `wc -c <'config.h-dist'`; then
- echo shar: \"'config.h-dist'\" unpacked with wrong size!
- fi
- # end of 'config.h-dist'
- fi
- if test -f 'cycle.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'cycle.pr'\"
- else
- echo shar: Extracting \"'cycle.pr'\" \(241 characters\)
- sed "s/^X//" >'cycle.pr' <<'END_OF_FILE'
- X/* "@(#)cycle.pr 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0x07C0,0x0FE0,0x1834,0x301C,0x601C,0x203C,0x0000,0x0000,
- X 0x7808,0x700C,0x7018,0x5830,0x0FE0,0x07C0,0x0000,0x0000
- X
- END_OF_FILE
- if test 241 -ne `wc -c <'cycle.pr'`; then
- echo shar: \"'cycle.pr'\" unpacked with wrong size!
- fi
- # end of 'cycle.pr'
- fi
- if test -f 'dn.arrow.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'dn.arrow.pr'\"
- else
- echo shar: Extracting \"'dn.arrow.pr'\" \(243 characters\)
- sed "s/^X//" >'dn.arrow.pr' <<'END_OF_FILE'
- X/* "@(#)dn.arrow.pr 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0xFFFF,0x8001,0xBFFD,0xBFFD,0xBFFD,0x9FF9,0x8FF1,0x87E1,
- X 0x83C1,0x8181,0xB825,0xA435,0xA42D,0xB825,0x8001,0xFFFF
- END_OF_FILE
- if test 243 -ne `wc -c <'dn.arrow.pr'`; then
- echo shar: \"'dn.arrow.pr'\" unpacked with wrong size!
- fi
- # end of 'dn.arrow.pr'
- fi
- if test -f 'edit_menu.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'edit_menu.c'\"
- else
- echo shar: Extracting \"'edit_menu.c'\" \(3334 characters\)
- sed "s/^X//" >'edit_menu.c' <<'END_OF_FILE'
- X/* @(#)edit_menu.c (c) copyright 10/18/86 (Dan Heller) */
- X
- X/* edit_menu.c
- X *
- X * Routine which handles the menu you get when in the msg_win while editing
- X * a letter. This is just a fancy front end for ~ commands (nyuk, nyuk).
- X */
- X#include "mush.h"
- X
- X#define EDIT_IT (char *)'e'
- X#define PAGE (char *)'p'
- X#define INC (char *)'i'
- X#define INC_HDR (char *)'H'
- X#define FWD_MSG (char *)'f'
- X#define TO_LIST (char *)'t'
- X#define SUBJECT (char *)'s'
- X#define CC_LIST (char *)'c'
- X#define BC_LIST (char *)'b'
- X#define ALL_HDR (char *)'h'
- X#define SIGN_IT (char *)'S'
- X#define NO_SIGN (char *)'n'
- X#define FORT (char *)'F'
- X#define NO_FORT (char *)'N'
- X#define ERASE (char *)'E'
- X#define SEND (char *)'X'
- X#define ABORT (char *)'q'
- X#define MENU_HELP (char *)'?'
- X
- static struct menuitem edit_items[] = {
- X { MENU_IMAGESTRING, "Enter Editor", EDIT_IT },
- X { MENU_IMAGESTRING, "Send Letter", SEND },
- X { MENU_IMAGESTRING, "Abort Letter", ABORT },
- X { MENU_IMAGESTRING, "Review Letter", PAGE },
- X { MENU_IMAGESTRING, "Include Message", INC },
- X { MENU_IMAGESTRING, "Inc. msg w/hdr", INC_HDR },
- X { MENU_IMAGESTRING, "Forward message", FWD_MSG },
- X { MENU_IMAGESTRING, "Change To line", TO_LIST },
- X { MENU_IMAGESTRING, "Change Subject", SUBJECT },
- X { MENU_IMAGESTRING, "Change Cc list", CC_LIST },
- X { MENU_IMAGESTRING, "Change Bcc list", BC_LIST },
- X { MENU_IMAGESTRING, "Change All hdrs", ALL_HDR },
- X { MENU_IMAGESTRING, "Add .signature", SIGN_IT },
- X { MENU_IMAGESTRING, "No .signature", NO_SIGN },
- X { MENU_IMAGESTRING, "Add a fortune", FORT },
- X { MENU_IMAGESTRING, "No fortune", NO_FORT },
- X { MENU_IMAGESTRING, "Erase Message", ERASE },
- X { MENU_IMAGESTRING, "Help", MENU_HELP }
- X};
- X
- static struct menu menu = {
- X MENU_IMAGESTRING, "Editing options",
- X sizeof (edit_items) / sizeof (struct menuitem), edit_items,
- X (struct menu *)NULL,
- X NULL
- X};
- X
- edit_menu(event, fd)
- struct inputevent *event;
- X{
- X static char buf[5];
- X struct menuitem *m_item;
- X register char *action, *p = buf+1;
- X struct menu *menu_ptr = &menu;
- X
- X if (!(m_item = menu_display(&menu_ptr, event, fd)) || get_hdr_field) {
- X if (get_hdr_field)
- X print("Finish the message header first.");
- X return;
- X }
- X action = m_item->mi_data;
- X if (txt.x > 5)
- X add_to_letter(rite('\n')); /* flush line for him */
- X
- X if (!msg_cnt && (action == INC || action == INC_HDR || action == FWD_MSG)) {
- X print("No messages to include");
- X return;
- X }
- X buf[0] = *escape;
- X switch(action) {
- X case EDIT_IT : (void) strcpy(p, "v");
- X when PAGE : (void) strcpy(p, "p");
- X when INC : (void) strcpy(p, "i");
- X when INC_HDR : (void) strcpy(p, "H");
- X when ALL_HDR : (void) strcpy(p, "h");
- X when SUBJECT : (void) strcpy(p, "s");
- X when TO_LIST : (void) strcpy(p, "t");
- X when CC_LIST : (void) strcpy(p, "c");
- X when BC_LIST : (void) strcpy(p, "b");
- X when FWD_MSG : (void) strcpy(p, "f");
- X when SIGN_IT : (void) strcpy(p, "S");
- X when NO_SIGN : (void) strcpy(p, "S!");
- X when FORT : (void) strcpy(p, "F");
- X when NO_FORT : (void) strcpy(p, "F!");
- X when ERASE : (void) strcpy(p, "E");
- X when ABORT : (void) strcpy(p, "q");
- X when SEND : finish_up_letter(); return;
- X otherwise : (void) strcpy(p, "?");
- X }
- X add_to_letter(buf);
- X}
- END_OF_FILE
- if test 3334 -ne `wc -c <'edit_menu.c'`; then
- echo shar: \"'edit_menu.c'\" unpacked with wrong size!
- fi
- # end of 'edit_menu.c'
- fi
- if test -f 'envelope.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'envelope.pr'\"
- else
- echo shar: Extracting \"'envelope.pr'\" \(247 characters\)
- sed "s/^X//" >'envelope.pr' <<'END_OF_FILE'
- X/* "@(#)envelope.cursor 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0xFFFF,0xC003,0xA005,0x9009,0x8811,0x8421,
- X 0x8241,0x8181,0x8001,0x8001,0x8001,0xFFFF,0x0000,0x0000
- END_OF_FILE
- if test 247 -ne `wc -c <'envelope.pr'`; then
- echo shar: \"'envelope.pr'\" unpacked with wrong size!
- fi
- # end of 'envelope.pr'
- fi
- if test -f 'glasses.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'glasses.pr'\"
- else
- echo shar: Extracting \"'glasses.pr'\" \(246 characters\)
- sed "s/^X//" >'glasses.pr' <<'END_OF_FILE'
- X/* "@(#)glasses.cursor 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0x0C06,0x1209,0x1209,0x2211,0x2010,0x4020,
- X 0x4020,0x8C40,0xF3C0,0x8C40,0x8C40,0x8C40,0x7380,0x0000
- END_OF_FILE
- if test 246 -ne `wc -c <'glasses.pr'`; then
- echo shar: \"'glasses.pr'\" unpacked with wrong size!
- fi
- # end of 'glasses.pr'
- fi
- if test -f 'mail.icon.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mail.icon.1'\"
- else
- echo shar: Extracting \"'mail.icon.1'\" \(1933 characters\)
- sed "s/^X//" >'mail.icon.1' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x1FFF,0xFFFF,0xFE01,
- X 0x8000,0xFE00,0x0000,0x0181,0x8007,0x01C0,0x0000,0x0061,
- X 0x8018,0x0030,0x0000,0x0011,0x8020,0x7008,0x0000,0x0011,
- X 0x80C1,0xFC06,0x0000,0x0009,0x8101,0xFC01,0x0000,0x0009,
- X 0x8103,0xFE01,0x0000,0x0005,0x8203,0xFE00,0x8000,0x0005,
- X 0x8403,0xFE00,0x4000,0x0005,0x8401,0xFC00,0x4000,0x0005,
- X 0x8801,0xFC00,0x2000,0x0005,0x8800,0x7000,0x2000,0x0005,
- X 0x8800,0x0000,0x3000,0x0005,0x9000,0x0000,0x1000,0x0005,
- X 0x9000,0x0000,0x1000,0x0005,0x93FF,0xFFFF,0x9000,0x0025,
- X 0xA200,0x0000,0x9000,0x00E5,0xA200,0x0000,0x9000,0x03A5,
- X 0xA200,0x0000,0x9000,0x0625,0xA3FF,0xFFFF,0x9000,0x1C25,
- X 0xA000,0x0000,0x1000,0x3425,0xA000,0x0000,0x1000,0xC425,
- X 0xA000,0x0000,0x1003,0x8425,0xA000,0x0000,0x1006,0x0425,
- X 0xA000,0x0000,0x101C,0x0425,0xA000,0x0000,0x11F0,0x0425,
- X 0xA000,0x0000,0x13E0,0x0445,0xA000,0x0000,0x13E0,0x0585,
- X 0xA000,0x0000,0x13E0,0x0605,0xA000,0x0000,0x11C0,0x0405,
- X 0xA000,0x0000,0x1000,0x000D,0xA000,0x0000,0x1000,0x0011,
- X 0xA000,0x0000,0x1000,0x0021,0xA000,0x0000,0x1000,0x00C1,
- X 0xA000,0x0000,0x1000,0x0101,0xA000,0x0000,0x1000,0x0601,
- X 0xA000,0x0000,0x1000,0x0801,0xA000,0x0000,0x1000,0x3801,
- X 0xA000,0x0000,0x1000,0x4801,0xA000,0x0000,0x1000,0x8801,
- X 0xA000,0x0000,0x1003,0x0801,0xA000,0x0000,0x1004,0x0801,
- X 0xA000,0x0000,0x101C,0x0801,0xA000,0x0000,0x1024,0x0801,
- X 0xA000,0x0000,0x1044,0x0801,0xA000,0x0000,0x1184,0x0801,
- X 0xA000,0x0000,0x1204,0x0801,0xA000,0x0000,0x1404,0x0801,
- X 0xBFFF,0xFFFF,0xF804,0x0801,0x8000,0x0000,0x0004,0x0801,
- X 0x8000,0x0000,0x0004,0x0801,0x8000,0x0000,0x0004,0x0801,
- X 0x8000,0x0000,0x0004,0x0801,0xFFFF,0xFFFF,0xFFFF,0xFFFF
- END_OF_FILE
- if test 1933 -ne `wc -c <'mail.icon.1'`; then
- echo shar: \"'mail.icon.1'\" unpacked with wrong size!
- fi
- # end of 'mail.icon.1'
- fi
- if test -f 'mail.icon.2' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mail.icon.2'\"
- else
- echo shar: Extracting \"'mail.icon.2'\" \(1933 characters\)
- sed "s/^X//" >'mail.icon.2' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
- X 0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x00E0,0x0001,
- X 0x8000,0x0000,0x00DE,0x0001,0x8000,0x0000,0x00C1,0xE001,
- X 0x8000,0x0000,0x00C0,0x1801,0x8000,0x0000,0x00C0,0x0801,
- X 0x8000,0x0000,0x00C0,0x0801,0x8000,0x1FFF,0xFFC0,0x0E01,
- X 0x8000,0xFE00,0x00C0,0x0981,0x8007,0x01C0,0x00C0,0x0861,
- X 0x8018,0x0030,0x00C0,0x0811,0x8020,0x7008,0x00C0,0x0811,
- X 0x80C1,0xFC06,0x00C0,0x1809,0x8101,0xBC01,0x00C0,0x6009,
- X 0x8103,0x1E01,0x00C1,0x8005,0x8202,0x0E00,0x80C6,0x0005,
- X 0x8404,0x0400,0x40D8,0x0005,0x8408,0x0200,0x40E0,0x0005,
- X 0x8810,0x0100,0x20C0,0x0005,0x8820,0x6080,0x20C0,0x0005,
- X 0x8840,0x4040,0x30C0,0x0005,0x9081,0x3020,0x10C0,0x0005,
- X 0x9041,0x9C10,0x10C0,0x0005,0x93E0,0x8A0F,0x90C0,0x0005,
- X 0xA210,0x6404,0x90C0,0x0005,0xA208,0x3002,0x90C0,0x0005,
- X 0xA204,0x1401,0x90C0,0x0005,0xA3FF,0xFFFF,0x90C0,0x0005,
- X 0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x10C0,0x0005,
- X 0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x10C0,0x0005,
- X 0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x11C0,0x0005,
- X 0xA000,0x0000,0x13E0,0x0005,0xA000,0x0000,0x13E0,0x0005,
- X 0xA000,0x0000,0x13E0,0x0005,0xA000,0x0000,0x11C0,0x0005,
- X 0xA000,0x0000,0x1000,0x000D,0xA000,0x0000,0x1000,0x0011,
- X 0xA000,0x0000,0x1000,0x0021,0xA000,0x0000,0x1000,0x00C1,
- X 0xA000,0x0000,0x1000,0x0101,0xA000,0x0000,0x1000,0x0601,
- X 0xA000,0x0000,0x1000,0x0801,0xA000,0x0000,0x1000,0x3001,
- X 0xA000,0x0000,0x1000,0x4001,0xA000,0x0000,0x1000,0x8001,
- X 0xA000,0x0000,0x1003,0x8001,0xA000,0x0000,0x1004,0x8001,
- X 0xA000,0x0000,0x1018,0x8001,0xA000,0x0000,0x1020,0x8001,
- X 0xA000,0x0000,0x1060,0x8001,0xA000,0x0000,0x1180,0x8001,
- X 0xA000,0x0000,0x1280,0x8001,0xA000,0x0000,0x1480,0x8001,
- X 0xBFFF,0xFFFF,0xFC80,0x8001,0x8000,0x0000,0x0080,0x8001,
- X 0x8000,0x0000,0x0080,0x8001,0x8000,0x0000,0x0080,0x8001,
- X 0x8000,0x0000,0x0080,0x8001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
- END_OF_FILE
- if test 1933 -ne `wc -c <'mail.icon.2'`; then
- echo shar: \"'mail.icon.2'\" unpacked with wrong size!
- fi
- # end of 'mail.icon.2'
- fi
- if test -f 'makefile.bsd' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.bsd'\"
- else
- echo shar: Extracting \"'makefile.bsd'\" \(1129 characters\)
- sed "s/^X//" >'makefile.bsd' <<'END_OF_FILE'
- X# makefile.bsd (c) copyright 1986 (Dan Heller)
- X#
- HDRS= mush.h config.h-dist strings.h bindings.h
- SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c print.c dates.c \
- X signals.c aliases.c setopts.c msgs.c pick.c sort.c expr.c folders.c \
- X loop.c help.c viewopts.c curses.c curs_io.c bind.c file.c strings.c
- OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
- X signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
- X folders.o dates.o loop.o help.o viewopts.o curses.o curs_io.o bind.o
- HELP_FILES= README-6.0 README cmd_help mush.1
- MAKES= makefile.bsd makefile.x286 makefile.x386 makefile.sys.v
- X
- CFLAGS= -O -DCURSES -DBSD
- LDFLAGS= -s
- LINTFLAGS= -bxah -Dlint -DCURSES -DBSD
- LIBES= -lcurses -ltermlib
- X
- mush: $(OBJS)
- X @echo loading...
- X @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
- X
- tape:
- X @tar fcv /dev/rst0 $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
- X
- tar:
- X @tar fcv MUSH $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
- X
- tarmail:
- X tar fcv - $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES) | \
- X compress | btoa > mush.tarmail
- X
- lint:
- X lint $(LINTFLAGS) $(SRCS)
- X
- clean:
- X rm -f *.o core mush
- END_OF_FILE
- if test 1129 -ne `wc -c <'makefile.bsd'`; then
- echo shar: \"'makefile.bsd'\" unpacked with wrong size!
- fi
- # end of 'makefile.bsd'
- fi
- if test -f 'makefile.sun' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.sun'\"
- else
- echo shar: Extracting \"'makefile.sun'\" \(1365 characters\)
- sed "s/^X//" >'makefile.sun' <<'END_OF_FILE'
- X# makefile.sun (c) copyright 1986 (Dan Heller)
- X#
- HDRS= mush.h config.h-dist strings.h bindings.h
- X
- SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c rite.c \
- X select.c doproc.c print.c signals.c aliases.c setopts.c msgs.c \
- X hdr_procs.c tool.c hdr_panel.c main_panel.c help.c viewopts.c sort.c \
- X pick.c fkeys.c expr.c folders.c dates.c loop.c edit_menu.c \
- X curses.c curs_io.c bind.c file.c strings.c
- X
- OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o rite.o \
- X select.o doproc.o print.o signals.o aliases.o setopts.o msgs.o \
- X hdr_procs.o tool.o hdr_panel.o main_panel.o help.o viewopts.o sort.o \
- X pick.o fkeys.o expr.o folders.o dates.o loop.o edit_menu.o \
- X curses.o curs_io.o bind.o file.o strings.o
- X
- IMAGES= mail.icon.1 mail.icon.2 check.pr cycle.pr envelope.pr glasses.pr \
- X write.pr up.arrow.pr dn.arrow.pr coffee.cup.pr
- X
- HELP_FILES= README-6.0 README cmd_help tool_help mush.1
- X
- MAKES= makefile.sun makefile.bsd makefile.sys.v makefile.x286 makefile.x386
- X
- CFLAGS= -O -DSUNTOOL -DCURSES -DBSD
- LDFLAGS= -s
- LIBES= -lcurses -ltermlib -lsuntool -lsunwindow -lpixrect
- LINTFLAGS= -bxah -Dlint
- X
- mush: $(OBJS)
- X @echo loading...
- X @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
- X
- tar:
- X @tar fcv MUSH $(HELP_FILES) $(MAKES) $(IMAGES) $(HDRS) $(SRCS)
- X
- lint:
- X make -f makefile.bsd lint
- X
- clean:
- X rm -f *.o core mush
- END_OF_FILE
- if test 1365 -ne `wc -c <'makefile.sun'`; then
- echo shar: \"'makefile.sun'\" unpacked with wrong size!
- fi
- # end of 'makefile.sun'
- fi
- if test -f 'makefile.sys.v' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.sys.v'\"
- else
- echo shar: Extracting \"'makefile.sys.v'\" \(929 characters\)
- sed "s/^X//" >'makefile.sys.v' <<'END_OF_FILE'
- HDRS1= mush.h config.h
- HDRS2= strings.h
- HDRS3= bindings.h
- SRCS1= aliases.c commands.c dates.c execute.c expr.c folders.c \
- X hdrs.c init.c loop.c mail.c main.c misc.c msgs.c pick.c \
- X print.c setopts.c signals.c sort.c viewopts.c
- SRCS2= bind.c curs_io.c curses.c help.c file.c strings.c
- X
- OBJS1= aliases.o commands.o dates.o execute.o expr.o folders.o \
- X hdrs.o init.o loop.o mail.o main.o misc.o msgs.o pick.o \
- X print.o setopts.o signals.o sort.o viewopts.o
- OBJS2= bind.o curs_io.o curses.o help.o file.o strings.o
- X
- X# Sun OS systems who wish to compile with sys-v options:
- X# CC= /usr/5bin/cc
- X# CFLAGS= -O -DSYSV -DCURSES -DUSG
- X# LIBS= -L/usr/5lib -lcurses
- CFLAGS= -O -DSYSV -DCURSES -DREGCMP -DUSG
- LDFLAGS= -s
- LIBS= -lcurses
- PROG= mush
- X
- X$(PROG): $(OBJS1) $(OBJS2)
- X @echo loading...
- X @cc $(LDFLAGS) $(OBJS1) $(OBJS2) -o $(PROG) $(LIBS)
- X
- X$(OBJS1): $(HDRS1) $(HDRS2)
- X$(OBJS2): $(HDRS1) $(HDRS2) $(HDRS3)
- help.o: strings.h
- END_OF_FILE
- if test 929 -ne `wc -c <'makefile.sys.v'`; then
- echo shar: \"'makefile.sys.v'\" unpacked with wrong size!
- fi
- # end of 'makefile.sys.v'
- fi
- if test -f 'makefile.x286' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.x286'\"
- else
- echo shar: Extracting \"'makefile.x286'\" \(1296 characters\)
- sed "s/^X//" >'makefile.x286' <<'END_OF_FILE'
- HDRS= mush.h config.h-dist strings.h bindings.h
- SRCS1= main.c init.c misc.c execute.c
- SRCS2= signals.c aliases.c msgs.c pick.c viewopts.c
- SRCS3= sort.c expr.c folders.c dates.c help.c
- SRCS4= loop.c bind.c
- SRCS5= commands.c setopts.c hdrs.c
- SRCS6= mail.c print.c
- SRCS7= curses.c curs_io.c
- SRCS8= file.c strings.c
- OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
- X signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
- X folders.o dates.o loop.o help.o viewopts.o bind.o curses.o curs_io.o
- DOCS= README cmd_help mush.1
- MAKES= makefile.sys.v makefile.xenix makefile.bsd
- X
- CFLAGS= -O -DSYSV -Mle -DCURSES -DREGCMP -DUSG
- LDFLAGS= -X -Mle -lx -F 4000
- LIBES= -lcurses -ltermlib
- X
- mush: $(OBJS)
- X @echo loading...
- X @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
- X
- misc.o: misc.c
- X cc $(CFLAGS) -LARGE -c misc.c
- X
- bind.o: bind.c
- X cc $(CFLAGS) -LARGE -c bind.c
- X
- shar:
- X shar ${DOCS} ${MAKES} ${HDRS}>hdr.shr
- X shar ${SRCS1} > src1.shr
- X shar ${SRCS2} > src2.shr
- X shar ${SRCS3} > src3.shr
- X shar ${SRCS4} > src4.shr
- X shar ${SRCS5} > src5.shr
- X shar ${SRCS6} > src6.shr
- X shar ${SRCS7} > src7.shr
- X shar ${SRCS8} > src8.shr
- X
- tar:
- X tar fcv MUSH ${MAKES} ${HDRS} ${DOCS} ${SRCS1} \
- X ${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} ${SRCS6} ${SRCS7} ${SRCS}8
- X
- clean:
- X rm -f *.o core mush
- END_OF_FILE
- if test 1296 -ne `wc -c <'makefile.x286'`; then
- echo shar: \"'makefile.x286'\" unpacked with wrong size!
- fi
- # end of 'makefile.x286'
- fi
- if test -f 'makefile.x386' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.x386'\"
- else
- echo shar: Extracting \"'makefile.x386'\" \(1240 characters\)
- sed "s/^X//" >'makefile.x386' <<'END_OF_FILE'
- HDRS= mush.h config.h-dist strings.h bindings.h
- SRCS1= main.c init.c misc.c execute.c
- SRCS2= signals.c aliases.c msgs.c pick.c viewopts.c
- SRCS3= sort.c expr.c folders.c dates.c help.c
- SRCS4= loop.c bind.c
- SRCS5= commands.c setopts.c hdrs.c
- SRCS6= mail.c print.c
- SRCS7= curses.c curs_io.c
- SRCS8= file.c strings.c
- OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
- X signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
- X folders.o dates.o loop.o help.o viewopts.o bind.o curses.o curs_io.o
- DOCS= README cmd_help mush.1
- MAKES= makefile.sys.v makefile.xenix makefile.bsd
- X
- CFLAGS= -O -DSYSV -M3e -DCURSES -DREGCMP -DUSG
- LDFLAGS= -X -M3 -lx
- LIBES= -lcurses -ltermlib
- X
- mush: $(OBJS)
- X @echo loading...
- X @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
- X
- bind.o: bind.c
- X cc $(CFLAGS) -LARGE -c bind.c
- X
- shar:
- X shar ${DOCS} ${MAKES} ${HDRS}>hdr.shr
- X shar ${SRCS1} > src1.shr
- X shar ${SRCS2} > src2.shr
- X shar ${SRCS3} > src3.shr
- X shar ${SRCS4} > src4.shr
- X shar ${SRCS5} > src5.shr
- X shar ${SRCS6} > src6.shr
- X shar ${SRCS7} > src7.shr
- X shar ${SRCS8} > src8.shr
- X
- tar:
- X tar fcv MUSH ${MAKES} ${HDRS} ${DOCS} ${SRCS1} \
- X ${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} ${SRCS6} ${SRCS7} ${SRCS8}
- X
- clean:
- X rm -f *.o core mush
- END_OF_FILE
- if test 1240 -ne `wc -c <'makefile.x386'`; then
- echo shar: \"'makefile.x386'\" unpacked with wrong size!
- fi
- # end of 'makefile.x386'
- fi
- if test -f 'strings.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'strings.h'\"
- else
- echo shar: Extracting \"'strings.h'\" \(473 characters\)
- sed "s/^X//" >'strings.h' <<'END_OF_FILE'
- X/* @(#)strings.h (c) copyright 9/3/86 (Dan Heller) */
- X
- X/* External function definitions for routines described in string(3). */
- char *strcat(), *strncat(), *strcpy(), *strncpy();
- int strcmp(), strncmp(), strlen();
- X
- X#ifdef SYSV
- X#define sprintf Sprintf
- X#define index strchr
- X#define rindex strrchr
- X#endif /* SYSV */
- X
- char
- X *sprintf(), /* Sprintf for sysv -- see end of misc.c */
- X *any(), /* return first char in str2 that exists in str1 */
- X *index(), *rindex();
- END_OF_FILE
- if test 473 -ne `wc -c <'strings.h'`; then
- echo shar: \"'strings.h'\" unpacked with wrong size!
- fi
- # end of 'strings.h'
- fi
- if test -f 'up.arrow.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'up.arrow.pr'\"
- else
- echo shar: Extracting \"'up.arrow.pr'\" \(243 characters\)
- sed "s/^X//" >'up.arrow.pr' <<'END_OF_FILE'
- X/* "@(#)up.arrow.pr 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0xFFFF,0x8001,0xA439,0xA425,0xA439,0x9821,0x8181,0x83C1,
- X 0x87E1,0x8FF1,0x9FF9,0xBFFD,0xBFFD,0xBFFD,0x8001,0xFFFF
- END_OF_FILE
- if test 243 -ne `wc -c <'up.arrow.pr'`; then
- echo shar: \"'up.arrow.pr'\" unpacked with wrong size!
- fi
- # end of 'up.arrow.pr'
- fi
- if test -f 'write.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'write.pr'\"
- else
- echo shar: Extracting \"'write.pr'\" \(244 characters\)
- sed "s/^X//" >'write.pr' <<'END_OF_FILE'
- X/* "@(#)write.cursor 2.2 9/3/86 (Dan Heller)"; */
- X
- X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0018,0x002C,0x0056,0x00A4,0x0148,0x0290,0x0520,0x0A40,
- X 0x1080,0x2100,0x4200,0xE400,0xE800,0xF000,0xE000,0x0000
- END_OF_FILE
- if test 244 -ne `wc -c <'write.pr'`; then
- echo shar: \"'write.pr'\" unpacked with wrong size!
- fi
- # end of 'write.pr'
- fi
- echo shar: End of archive 1 \(of 14\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 14 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-